package com.zzh.zzhaiagent.agent;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author: zzh
 * @date: 2025/05/22 20:31:26
 * @version: 1.0
 */
//ReActAgent 实现了ReAct模式的Agent，能够进行思考，执行，观察，具体实现think和act抽象化，主要是step步骤流程实现ReAct机制
@Data
@EqualsAndHashCode(callSuper = true)
public abstract class ReActAgent extends BaseAgent{

    /**
     * 处理当前状态，并且决定下一步的动作
     */
    public abstract boolean think();

    /**
     * 执行决定的行动
     * @return 行动结果
     */
    public abstract String act();

    /**
     * 单个步骤的执行 - 思考+执行
     * @return
     */
    @Override
    public String step() {
        try {
            boolean shouldAct = think();
            if (!shouldAct){
                return "思考后，不执行任何动作";
            }
            return act();
        }catch (Exception e){
            //记录日志
            e.printStackTrace();
            return "执行过程中出现异常" + e.getMessage();
        }
    }
}
